perm filename SINTAX.M2[L70,TES] blob sn#009950 filedate 1972-06-27 generic text, type T, neo UTF8
00100	<INFIX> <ENTITY_NAME>:N [:N ≠ STOP$] → :N
00200	
00300	<INFIX> `.' → ?&DOT		<INFIX> `←' → ?&STORE
00400	<INFIX> `*' → TIMES		<INFIX> `/' → QUOTIENT
00500	<INFIX> `+' → PLUS		<INFIX> `-' → DIFFERENCE
00600	<INFIX> `↑' → PRELIST		<INFIX> `↓' → SUFLIST
00700	<INFIX> `@' → APPEND		<INFIX> `ε' → MEMBER
00800	<INFIX> `=' → EQUAL		<INFIX> `≠' → NEQUAL
00900	<INFIX> `≤' → LEQUAL		<INFIX> `≥' → GEQUAL
01000	<INFIX> `&' → AND		<INFIX> `∧' → AND
01100	<INFIX> `|' → OR		<INFIX> `∨' → OR
01200	
01300	<PREFIX> STR → STR		<PREFIX> STRP → STRP		<PREFIX> STRLEN → STRLEN
01400	<PREFIX> AT → AT		<PREFIX> PRINTSTR → PRINTSTR	<PREFIX> PLUS → PLUS
01500	<PREFIX> CAR → CAR		<PREFIX> CDR → CDR		<PREFIX> CAAR → CAAR
01600	<PREFIX> CADR → CADR		<PREFIX> CDAR → CDAR		<PREFIX> CDDR → CDDR
01700	<PREFIX> CAAAR → CAAAR		<PREFIX> CAADR → CAADR		<PREFIX> CADAR → CADAR
01800	<PREFIX> CDAAR → CDAAR		<PREFIX> CADDR → CADDR		<PREFIX> CDADR → CDADR
01900	<PREFIX> CDAAR → CDAAR		<PREFIX> CADDR → CADDR		<PREFIX> CDADR → CDADR
02000	<PREFIX> CDDAR → CDDAR		<PREFIX> CDDDR → CDDDR		<PREFIX> CAAAAR → CAAAAR
02100	<PREFIX> CAAADR → CAAADR	<PREFIX> CAADAR → CAADAR	<PREFIX> CADAAR → CADAAR
02200	<PREFIX> CDAAAR → CDAAAR	<PREFIX> CAADDR → CAADDR	<PREFIX> CADADR → CADADR
02300	<PREFIX> CDAADR → CDAADR	<PREFIX> CADDAR → CADDAR	<PREFIX> CDADAR → CDADAR
02400	<PREFIX> CDDAAR → CDDAAR	<PREFIX> CADDDR → CADDDR	<PREFIX> CDADDR → CDADDR
02500	<PREFIX> CDDADR → CDDADR	<PREFIX> CDDDAR → CDDDAR	<PREFIX> CDDDDR → CDDDDR
02600	<PREFIX> ABS → ABS		<PREFIX> ADD1 → ADD1		<PREFIX> ARG → ARG
02700	<PREFIX> ASCII → ASCII		<PREFIX> ATOM → ATOM		<PREFIX> BAKGAG → BAKGAG
02800	<PREFIX> CSYM → CSYM		<PREFIX> DDTIN → DDTIN		<PREFIX> ED → ED
02900	<PREFIX> ERR → ERR		<PREFIX> EVAL → EVAL		<PREFIX> ?*EVAL → ?*EVAL
03000	<PREFIX> EXAMINE → EXAMINE	<PREFIX> EXPLODE → EXPLODE	<PREFIX> EXPLODEC → EXPLODEC
03100	<PREFIX> FIX → FIX		<PREFIX> FLATSIZE → FLATSIZE	<PREFIX> FUNCTION → FUNCTION
03200	<PREFIX> ?*FUNCTION →?*FUNCTION	<PREFIX> GCGAG → GCGAG		<PREFIX> ?*GETSYM → ?*GETSYM
03300	<PREFIX> GO → GO		<PREFIX> INITFN → INITFN	<PREFIX> INTERN → INTERN
03400	<PREFIX> LAST → LAST		<PREFIX> LENGTH → LENGTH	<PREFIX> LINELENGTH → LINELENGTH
03500	<PREFIX> MAKNAM → MAKNAM	<PREFIX> MINUS → MINUS		<PREFIX> MINUSP → MINUSP
03600	<PREFIX> NCONS → NCONS		<PREFIX> NOT → NOT		<PREFIX> NOUUO → NOUUO
03700	<PREFIX> NULL → NULL		<PREFIX> NUMBERP → NUMBERP	<PREFIX> NUMVAL → NUMVAL
03800	<PREFIX> PRINC → PRINC		<PREFIX> PRINT → PRINT		<PREFIX> PRIN1 → PRIN1
03900	<PREFIX> QUOTE → QUOTE		<PREFIX> READLIST → READLIST	<PREFIX> RETURN → RETURN
04000	<PREFIX> REVERSE → REVERSE	<PREFIX> ?*RSET → ?*RSET	<PREFIX> SUB1 → SUB1
04100	<PREFIX> TERPRI → TERPRI	<PREFIX> TYO → TYO		<PREFIX> ZEROP → ZEROP
04200	<PREFIX> `¬' → NOT		<PREFIX> `+' → PLUS		<PREFIX> `-' → MINUS
     

00100	<HIER> (RIGHT :X) → <HIER> (RIGHT <HIER>:X)
00200	<HIER> (RIGHT (:L :R)) → :R
00300	<HIER> (LEFT :X) → <HIER> (LEFT <HIER>:X)
00400	<HIER> (LEFT (:L :R)) → :L
00500	
00600	<HIER> ?&DOT → (900 950)
00700	<HIER> TIMES → (700 750)	<HIER> QUOTIENT → (700 750)
00800	<HIER> PLUS → (600 650)		<HIER> DIFFERENCE → (600 650)
00900	<HIER>: DEFAULT → (500 550)	<HIER> DIFFERENCE → (500 550)
01000	<HIER> APPEND → (450 400)	<HIER> NCONC → (450 400)
01100	<HIER> CONS → (450 400)		<HIER> XCONS → (450 400)
01200	<HIER> CAT → (450 400)
01300	<HIER> EQ → (300 350)		<HIER> NEQ → (300 350)
01400	<HIER> EQUAL → (300 350)	<HIER> NEQUAL → (300 350)
01500	<HIER> LEQUAL → (300 350)	<HIER> GEQUAL → (300 350)
01600	<HIER> LESSP → (300 350)	<HIER> GREATERP → (300 350)
01700	<HIER> MEMBER → (300 350)	<HIER> MEMQ → (300 350)
01800	<HIER> AND → (200 250)		<HIER> OR → (100 150)
01900	<HIER> ?&STORE → (15 10)
02000	
02100	<MANY_ARGS> PLUS → T 		<MANY_ARGS> TIMES → T
02200	<MANY_ARGS> AND → T 		<MANY_ARGS> OR → T
     

00100	<PROGRAM> { ∞{ <PRINT_EXPRESSION>:E `;' } _EOF_ } → DONE
00200	
00300	<PRINT_EXPRESSION> { <EXPRESSION>:E } → <EVAL> (PRINT (QUOTE :E))
00400	
00500	<EXPRESSION> { <TERM>:T } → :T
00600	<EXPRESSION> { <TERM>:T <INFIX>:OP <EXPRESSION>:E } → (:OP :T :E)
00700	
00800	<TERM> { <SIMPEX>:S } → :S
00900	<TERM> { <TERM>:T <INFIX>:OP <SIMPEX>:S }
01000		{<INFIX>:NEXTOP} [<HIER>(LEFT :OP) ≥ <HIER>(LEFT :NEXTOP)]
01100			→ (:OP :T :S)
01200	
01300	<SIMPEX> { <BASIC>:B } → :B
01400	<SIMPEX> { <BASIC>:B `[' <ARGLIST>:A `]' } → (?&INDEX :B :A)
01500	<SIMPEX> { <BASIC>:B `[' <ARGLIST>:A :FOO } →
01600		<ERROR> (ILLEGAL INDEX FOR :B -- :FOO WHERE `]' EXPECTED)
01700	<SIMPEX> { <SIMPEX>:S `{' <EXPRESSION>:E `}' } → ('?&INCONTEXT :S :E)
01800	
01900	<BASIC> { <IDENTIFIER>:F `(' <ARGLIST>:A `)' } → (:F ::A)
02000	<BASIC> { <IDENTIFIER>:F `(' <ARGLIST>:A :FOO } →
02100		<ERROR> (ILLEGAL ARGUMENT FOR :F -- :FOO WHERE `)' EXPECTED)
02200	
02300	<BASIC> { <PREFIX>:P <SIMPEX>:S } → (:P :S)
02400	<BASIC> { <IDENTIFIER>:I } → :I
02500	<BASIC> { <NUMBER>:N } → :N
02600	<BASIC> { <STRING>:S } → :S
02700	
02800	<ARGLIST> { <EXPRESSION>:E  ∞{ `,' <EXPRESSION>:EE } } → (:E ::EE)
02900	
03000	<IDLIST> { <IDENTIFIER>:I  ∞{ `,' <IDENTIFIER>:II } } → (:I ::II)
03100	
03200	<LAMIDLIST> { <LAMID>(:I :S)  ∞{ `,' <LAMID>(:II :SS) } } → ((:I ::II)(:S ::SS))
03300	<LAMID> { SPECIAL  <IDENTIFIER>:I } → ((:I) (:I))
03400	<LAMID> { <IDENTIFIER>:I } → ((:I) ( ))
03500	
03600	<BASIC> { ≡' <SEXPRESSION>:S } → (QUOTE :S)
03700	<BASIC> { `<'  <ARGLIST>:A  `>' } → (LIST :A)
03800	<BASIC> { `<'  <ARGLIST>:A  :FOO } →
03900		<ERROR>(ILLEGAL EXPRESSION IN LIST BRACKETS -- :FOO WHERE `>' EXPECTED)
04000	<BASIC> { `('  <EXPRESSION>:E  `)' } → :E
04100	<BASIC> { `('  <EXPRESSION>:E  :FOO } →
04200		<ERROR>(ILLEGAL PARENTHESIZED EXPRESSION -- :FOO WHERE `)' EXPECTED)
04300	<BASIC> { OCTAL  <NUMBER>[$IBASE→8]:N } → :N
04400	<BASIC> { OCTAL  :FOO } →
04500		<ERROR> (`≡'OCTAL≡' NOT FOLLOWED BY A NUMBER')